package chapter04.s07exception;

// 自定义异常: Java允许用户自定义异常，继承自Exception或其子类
// 主动抛出异常:可以使用 throw 关键字抛出一个异常，无论它是新实例化的还是刚捕获到的

public class Example31 {
    public static void main(String[] args) {
        // 下面的代码定义了一个try…catch语句用于捕获异常
        try {
            int result = divide(4, -2);
            System.out.println(result);
        } catch (DivideByMinusException e) {     // 对捕获到的异常进行处理
            System.out.println(e.getMessage()); // 打印捕获的异常信息
        }
    }

    // 下面的方法实现了两个整数相除，并使用throws关键字声明抛出自定义异常.
    // 注意区别 throws 和 throw
    //     throws : 用在方法签名上，表示方法可能会抛出异常
    //     throw : 抛出异常
    public static int divide(int x, int y) throws DivideByMinusException {
        if (y < 0) {
            // 主动抛出异常，后面的语句不再执行
            throw new DivideByMinusException("除数是负数");
        }
        int result = x / y;     // 定义一个变量result记录两个数相除的结果
        return result;           // 将结果返回
    }
}
